6 research outputs found

    A Fuzzy Logic Programming Environment for Managing Similarity and Truth Degrees

    Full text link
    FASILL (acronym of "Fuzzy Aggregators and Similarity Into a Logic Language") is a fuzzy logic programming language with implicit/explicit truth degree annotations, a great variety of connectives and unification by similarity. FASILL integrates and extends features coming from MALP (Multi-Adjoint Logic Programming, a fuzzy logic language with explicitly annotated rules) and Bousi~Prolog (which uses a weak unification algorithm and is well suited for flexible query answering). Hence, it properly manages similarity and truth degrees in a single framework combining the expressive benefits of both languages. This paper presents the main features and implementations details of FASILL. Along the paper we describe its syntax and operational semantics and we give clues of the implementation of the lattice module and the similarity module, two of the main building blocks of the new programming environment which enriches the FLOPER system developed in our research group.Comment: In Proceedings PROLE 2014, arXiv:1501.0169

    Unfolding-based Improvements on Fuzzy Logic Programs

    Get PDF
    AbstractUnfolding is a semantics-preserving program transformation technique that consists in the expansion of subexpressions of a program using their own definitions. In this paper we define two unfolding-based transformation rules that extend the classical definition of the unfolding rule (for pure logic programs) to a fuzzy logic setting. We use a fuzzy variant of Prolog where each program clause can be interpreted under a different (fuzzy) logic. We adapt the concept of a computation rule, a mapping that selects the subexpression of a goal involved in a computation step, and we prove the independence of the computation rule. We also define a basic transformation system and we demonstrate its strong correctness, that is, original and transformed programs compute the same fuzzy computed answers. Finally, we prove that our transformation rules always produce an improvement in the efficiency of the residual program, by reducing the length of successful Fuzzy SLD-derivations

    String-based Multi-adjoint Lattices for Tracing Fuzzy Logic Computations

    Get PDF
    Classically, most programming languages use in a predefined way thenotion of “string” as an standard data structure for a comfortable management of arbitrary sequences of characters. However, in this paper we assign a different role to this concept: here we are concerned with fuzzy logic programming, a somehow recent paradigm trying to introduce fuzzy logic into logic programming. In this setting, the mathematical concept of multi-adjoint lattice has been successfully exploited into the so-called Multi-adjoint Logic Programming approach, MALP in brief, for modeling flexible notions of truth-degrees beyond the simpler case of true and false. Our main goal points out not only our formal proof verifying that stringbased lattices accomplish with the so-called multi-adjoint property (as well as its Cartesian product with similar structures), but also its correspondence with interesting debugging tasks into the FLOPER system (from “Fuzzy LOgic Programming Environment for Research”) developed in our research group

    Desplegado de programas lógicos difusos.

    No full text
    El objetivo general de esta tesis es la introducción de un conjunto de transformaciones, basadas en desplegado, para optimizar programas lógicos difusos. Introducimos por primera vez estas técnicas de transformación de programas, que por otra parte son clásicas en paradigmas declarativos precedentes como el lógico, funcional y el lógico-funcional, sobre distintos lenguajes de la programación lógica difusa (a los que también en ocasiones aportamos diferentes tipos de enriquecimientos), poniendo especial énfasis en el relativamente reciente marco lógico multi-adjunto. En este potente paradigma difuso se extiende la noción clásica de cláusula al etiquetar las reglas con pesos y permitir la presencia de distintos tipos de conectivas difusas en sus cuerpos, al tiempo que se dispone de una amplia gama de retículos para modelar la noción de grado de verdad en dominios más ricos que el intervalo [0,1]. Hemos estudiado las principales semánticas de la programación lógica multi-adjunta y aportado resultados relevantes sobre las relaciones que mantienen entre ellas. Además de formular mediante teoría de modelos la noción de modelo mínimo de Herbrand difuso en este contexto, también mejoramos su semántica procedural a dos niveles complementarios. Por un lado, demostramos sobre la fase operacional una extensión del resultado clásico de independencia de la regla de computación, lo que resulta crucial para demostrar las propiedades formales de nuestra noción de desplegado operacional. Por otra parte, diseñamos la fase interpretativa en términos de un sistema de transición de estados, lo que resulta preceptivo para formular el desplegado interpretativo en este marco y posteriormente abordar rigurosos análisis del coste computacional asociados a este tipo de computaciones y transformaciones. En este mismo contexto, adaptamos conceptos clásicos de evaluación parcial con la intención inicial de disponer de técnicas de especialización para programas lógicos multi-adjuntos. Un paso más allá, y con una motivación completamente diferente y original, mostramos que estas mismas técnicas admiten una fácil reutilización para el cálculo eficiente de reductantes (reglas especiales que son necesarias para garantizar la completitud -aproximada- en este contexto). Una particularidad de los lenguajes difusos en general, y del lógico multi-adjunto en especial, es que buena parte de las técnicas de manipulación de programas se prestan a su optimización mediante técnicas de umbralización: se trata de evitar computaciones irrelevantes en función de la gestión de los grados de verdad que llevan asociadas. En este sentido, hemos diseñado un algoritmo refinado y ágil para computar PE-reductantes muy eficientes mediante técnicas de evaluación parcial basadas en desplegado con un conjunto de umbrales dinámico. Todos los desarrollos descritos en esta tesis vienen acompañados de demostraciones formales de sus propiedades fundamentales (incluyendo invariablemente las de corrección, completitud y eficiencia), al tiempo que se proporcionan detalles técnicos sobre el prototipo FLOPER que se está implementando en nuestro grupo y que pretende servir de plataforma sobre la que implantar todos los avances relatados en la misma

    Operational/Interpretive Unfolding of Multi-adjoint Logic Programs

    No full text
    Multi-adjoint logic programming represents a very recent, extremely flexible attempt for introducing fuzzy logic into logic programming. In this setting, the execution of a goal w.r.t. a given program is done in two separate phases. During the operational one, admissible steps are systematically applied in a similar way to classical resolution steps in pure logic programming, thus returning a computed substitution together with an expression where all atoms have been exploited. This last expression is then interpreted under a given lattice during the so called interpretive phase, hence returning a value which represents the fuzzy component (truth degree) of the computed answer. On the other hand, unfolding is a well known transformation rule widely used in declarative programming for optimizing and specializing programs, among other applications. In essence, it is usually based on the application of operational steps on the body of program rules. The novelty of this paper consists in showing that this process can also be made in terms of interpretive steps. We present two strongly related kinds of unfolding (operational and interpretive), which, apart from exhibiting strong correctness properties (i.e. they preserve the semantics of computed substitutions and truth degrees) they are able to significantly simplify the two execution phases when solving goals
    corecore